/*
 * delay.h
 * 延时功能模块头文件
 * 提供微秒级和毫秒级延时函数
 */
 
#ifndef __DELAY_H
#define __DELAY_H

#include "./SYSTEM/sys/sys.h"  /* 包含系统头文件 */

/**
 * @brief   初始化延时系统
 * @param   sysclk: 系统时钟频率，单位MHz
 * @retval  无
 * @note    在使用其他延时函数前必须先调用此函数初始化
 */
void delay_init(uint16_t sysclk);           /* 初始化延时函数 */

/**
 * @brief   毫秒级延时函数
 * @param   nms: 要延时的毫秒数
 * @retval  无
 * @note    延时范围：0 < nms <= 65535
 */
void delay_ms(uint16_t nms);                /* 延时nms */

/**
 * @brief   微秒级延时函数
 * @param   nus: 要延时的微秒数
 * @retval  无
 * @note    延时范围：0 ~ 190887435us
 */
void delay_us(uint32_t nus);                /* 延时nus */

/**
 * @brief   HAL库延时函数重定义
 * @param   Delay: 要延时的毫秒数
 * @retval  无
 * @note    当未使用操作系统时重定义HAL_Delay函数，使用自定义的延时实现
 */
#if (!SYS_SUPPORT_OS)                       /* 没有使用Systick中断 */
    void HAL_Delay(uint32_t Delay);         /* HAL库延时函数，某些SDIO等需要用到 */
#endif

#endif
